#pragma once
template<class T, class Con = deque<T>>
class queue
{
public:
    queue()
    {
        Con _c;
    }

    void push(const T& x)
    {
        _c.push_front(x);
    }

    void pop()
    {
        _c.pop_back();
    }

    T& back()
    {
        return _c.front();
    }

    const T& back()const
    {
        return _c.front();
    }

    T& front()
    {
        return _c.back();
    }

    const T& front()const
    {
        return _c.back();
    }

    size_t size()const
    {
        return _c.size();
    }

    bool empty()const
    {
        return _c.size() == 0;
    }

private:
    Con _c;
};